<?php

namespace App\Http\Controllers\Admin\Mail;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Notification;
use App\Notifications\ActivatePassword as AP;
use Auth;
class ActivatePassword extends Controller
{
    //加载输入邮箱的地址方法
    public function resetpossword(){
        //加载输入邮箱地址模板
        return view('admin.activatepassword.resetpossword');
    }
    //发送邮件验证
    public function resetemail(Request $request){
        //获取post数据中的email
        $post = $request->all();
        //判断数据库是否有此邮箱，没有就不发送
        $user = User::where('email',$post['email'])->first();
        //如果有就进入判断里面执行
        if ($user){
            //发送邮件
            //参数解析:
            //第一个参数是通知消息发送给的用户数据对象,该数据对象中一定要有email字段
            //第二个参数是发送的消息通知类
            Notification::send($user,new AP($user['email'],$user['email_token']));
            //如果发送成功，就闪存信息，并加载登录页
            session()->flash('success','邮件已发送至您的邮箱，请及时修改密码！');
            return view('admin.activatepassword.passwordok');
        }
    }
    //加载修改密码模板
    public function changepassword($email,$email_token){
        return view('admin.activatepassword.revisepassword',compact('email','email_token'));
    }
    //处理修改密码
    public function  change(Request $request){
        //获取前端提交的所有数据
        $post = $request->all();
        $validator = $request->validate([
            'password' => 'required|between:6,20|confirmed',
            'password_confirmation' => 'required|between:6,20',
        ]);
        //通过email账号找到对应的token值
        $users = User::where('email',$post['email'])->value('email_token');
        //dd($user);
        //通过验证才能执行以下的方法
        //if (Auth::attempt(['email'=>$post['email'],'email_token'=>$post['email_token']])) {
        //对比上传的token值与数据库的token值是否一致，如果不一致就提示
        if ($post['email_token']==$users) {
            //dd($user);
            $user = User::where('email_token',$post['email_token'])->first();
            $user['password'] = bcrypt($post['password']);
            //将数据信息保存
            $user->save();
            //设置闪存并返回
            session()->flash('success', '密码修改成功，请重新登录！');
            //跳转到登录页
            return redirect()->route('login');
        }else{
            //设置闪存并返回
            session()->flash('danger', '邮箱账号验证错误，请重新发送邮件！');
            //跳转到登录页
            return redirect()->route('login');
        }
    }
}
